﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Windows.Forms;
using LarDosIdosos.Business.Model;
using LarDosIdosos.DataSources;

namespace LarDosIdosos
{
    public partial class WebUserControlDoacao : System.Web.UI.UserControl
    {
        private Funcionario funcionario;

        protected void Page_Load(object sender, EventArgs e)
        {
            //CarregaDropDownTipoDeDoacao();
        }

        //private void CarregaDropDownTiposDeProduto()
        //{
        //    if (dropDownListTipoDeDoacao.Items.Count == 0)
        //    {
        //        DataSources.DataSourceTipoDeProduto dataSourceTipoDeDoacao = new DataSourceTipoDeProduto();
        //        List<TipoProduto> list = dataSourceTipoDeDoacao.BuscaTodosOsTiposDeProduto();
        //        dropDownListTipoDeDoacao.Items.Add(new ListItem("", "0"));
        //        foreach (var tipoDoacao in list)
        //        {
        //            dropDownListTipoDeDoacao.Items.Add(new ListItem(tipoDoacao.Nome_Tipo_Produto,
        //                                                               tipoDoacao.Codigo_Tipo_Produto.ToString()));
        //        }
        //    }
        //}

        //private void CarregaDropDownProdutos()
        //{
        //    if (dropDownListProdutos.Items.Count == 0)
        //    {
        //        DataSourceProduto dataSourceProduto = new DataSourceProduto();
        //        List<Produto> listProduto = dataSourceProduto.BuscaTodosProdutos();
        //        dropDownListProdutos.Items.Add(new ListItem("", "0"));
        //        foreach (var produto in listProduto)
        //        {
        //            dropDownListProdutos.Items.Add(new ListItem(produto.Nome_Produto,
        //                                                               produto.Codigo_Produto.ToString()));
        //        }
        //    }
        //}

        //private void CarregaDropDownProdutos(string codigo_tipo_produto)
        //{
        //    if (dropDownListProdutos.Items.Count == 0)
        //    {
        //        DataSourceProduto dataSourceProduto = new DataSourceProduto();
        //        List<Produto> listProduto = dataSourceProduto.BuscaTodosProdutos();
        //        IEnumerable<Produto> listProdutoPorTipo = from p in listProduto
        //                                                  where p.Tipo_Produto.Codigo_Tipo_Produto.ToString() == codigo_tipo_produto
        //                                                  select p;
        //        dropDownListProdutos.Items.Add(new ListItem("", "0"));
        //        foreach (var produto in listProdutoPorTipo)
        //        {
        //            dropDownListProdutos.Items.Add(new ListItem(produto.Nome_Produto,
        //                                                               produto.Codigo_Produto.ToString()));
        //        }
        //    }
        //}

        //public void CarregaTelaDeCadastro()
        //{
        //    try
        //    {
        //        hiddenFieldCodigoDoacao.Value = "";
        //        dropDownListProdutos.ClearSelection();
        //        TextBoxQuantidade.Text = "";
        //        dropDownListTipoDeDoacao.ClearSelection();
        //        labelUnidadeDeMedida.Text = "";
        //        gridViewParceiro.DataSource = null;
        //        gridViewParceiro.DataBind();
        //        CarregaGridFuncionario();
        //        HabilitaDesabilitaControls(true);
        //    }
        //    catch (Exception ex)
        //    {
        //        throw new Exception("Erro na visualização do responsável.", ex);
        //    }
        //}

        //private void CarregaGridParceiro()
        //{
        //    gridViewParceiro.DataSource = ObtemParceiros();
        //}

        //private List<Parceiro> ObtemParceiros()
        //{
            
        //}

        //private void CarregaGridFuncionario()
        //{
        //    if(CarregaFuncionario())
        //    {
        //        gridViewFuncionario.DataSource = new List<Funcionario> {funcionario};
        //        gridViewFuncionario.DataBind();
        //        gridViewFuncionario.Visible = true;
        //    }
        //}

        //private bool CarregaFuncionario()
        //{
        //    if (Session["usuario"] != null)
        //    {
        //        funcionario = (Funcionario)Session["usuario"];
        //        return true;
        //    }
        //    return false;
        //}

        //protected void buttonSalvar_Onclick(object sender, EventArgs e)
        //{
        //    try
        //    {
        //        if (!string.IsNullOrEmpty(hiddenFieldCodigoDoacao.Value))
        //        {
        //            ArmazenaAlteracao();
        //        }
        //        else
        //        {
        //            //ArmazenaCadastro();
        //            Voltar();
        //        }
        //    }
        //    catch (Exception ex)
        //    {

        //    }
        //}

        public void Voltar()
        {
            hiddenFieldCodigoDoacao.Value = "";
            labelProduto.Text = "";
            labelTipoDeDoacao.Text = "";
            labelQuantidade.Text = "";
            labelUnidadeDeMedida.Text = "";
            gridViewParceiro.DataSource = null;
            gridViewFuncionario.DataSource = null;
            gridViewParceiro.DataBind();
            gridViewFuncionario.DataBind();
        }

        //private void ArmazenaCadastro()
        //{
        //    try
        //    {
        //        Business.Model.Doacao doacao = new Business.Model.Doacao();
        //        doacao.Descricao_Doacao = TextBoxDescricao.Text;
        //        doacao.Quantidade_Doacao = Convert.ToInt32(TextBoxQuantidade.Text);
        //        doacao.Tipo_Doacao = new TipoDoacao
        //        {
        //            Codigo_Tipo_Doacao = Convert.ToInt32(dropDownListTipoDeDoacao.SelectedValue)
        //        };
        //        doacao.Funcionario_Doacao = new Funcionario
        //        {
        //            Codigo_Funcionario = Convert.ToInt32(((HiddenField)gridViewFuncionario.Rows[0].FindControl("hiddenFieldId")).Value)
        //        };
        //        doacao.Parceiro_Doacao = new Parceiro
        //        {
        //            Codigo_Parceiro = Convert.ToInt32(((HiddenField)gridViewParceiro.Rows[0].FindControl("hiddenFieldId")).Value)
        //        };
        //        doacao.Unidade_De_Medida_Doacao = new UnidadeDeMedida
        //        {
        //            Codigo_Unidade_De_Medida = Convert.ToInt32(dropDownListUnidadeDeMedida.SelectedValue)
        //        };

        //        DataSourceDoacao dataSource = new DataSourceDoacao();
        //        int total = dataSource.InsertDoacao(doacao);

        //        FinalizaCadastroComSucesso(total + " Responsavel foi cadastrado com sucesso.");
        //    }
        //    catch (Exception ex)
        //    {
        //        FinalizaCadastroComErro("Erro ao Cadastrar Responsável.");
        //    }
        //}

        //private void ArmazenaAlteracao()
        //{
        //    int total;
        //    string resultado = "";
        //    try
        //    {
        //        Business.Model.Doacao doacao = new Business.Model.Doacao();

        //        doacao.Codigo_Entrada = Convert.ToInt32(hiddenFieldCodigoDoacao.Value);
        //        doacao.Produto.Codigo_Produto = Convert.ToInt32(dropDownListProdutos.SelectedValue);
        //        if (gridViewIdoso.Rows.Count > 0)
        //        {
        //            var codigoIdoso = ((HiddenField) gridViewIdoso.Rows[0].FindControl("hiddenFieldId")).Value;
        //            doacao.Idoso.Codigo_Idoso = codigoIdoso == "" ? 0 : Convert.ToInt32(codigoIdoso);
        //        }
        //        if (gridViewParceiro.Rows.Count > 0)
        //        {
        //            var codigoParceiro = ((HiddenField) gridViewParceiro.Rows[0].FindControl("hiddenFieldId")).Value;
        //            doacao.Parceiro.Codigo_Parceiro = codigoParceiro == "" ? 0 : Convert.ToInt32(codigoParceiro);
        //        }
        //        if (gridViewFuncionario.Rows.Count > 0)
        //        {
        //            var codigoFuncionario = ((HiddenField)gridViewFuncionario.Rows[0].FindControl("hiddenFieldId")).Value;
        //            doacao.FuncionarioEntradaProduto.Codigo_Funcionario = codigoFuncionario == "" ? 0 : Convert.ToInt32(codigoFuncionario);
        //        }

        //        doacao.Quantidade = Convert.ToInt32(TextBoxQuantidade.Text);

        //        DataSourceDoacao dataSource = new DataSourceDoacao();
        //        total = dataSource.UpdateDoacao(doacao);

        //        FinalizaCadastroComSucesso(total + " Doacao foi atualizada com sucesso.");
        //    }
        //    catch (Exception ex)
        //    {
        //        FinalizaCadastroComErro("Erro ao Atualizar Doacao.");
        //    }
        //}

        //private void FinalizaCadastroComSucesso(string mensagem)
        //{
        //    MessageBox.Show(mensagem, "Sucesso", MessageBoxButtons.OK,
        //                       MessageBoxIcon.None, MessageBoxDefaultButton.Button1,
        //                       MessageBoxOptions.ServiceNotification, false);
        //}

        //private void FinalizaCadastroComErro(string mensagem)
        //{
        //    MessageBox.Show(mensagem, "Erro", MessageBoxButtons.OK,
        //                       MessageBoxIcon.Error, MessageBoxDefaultButton.Button1,
        //                       MessageBoxOptions.ServiceNotification, false);
        //}

        public void CarregaVisualizacaoDetalhada(Business.Model.EntradaProduto estoque, bool habilita)
        {
            try
            {
                hiddenFieldCodigoDoacao.Value = estoque.Codigo_Entrada.ToString();
                labelTipoDeDoacao.Text = estoque.Produto.Tipo_Produto.Nome_Tipo_Produto;
                labelProduto.Text = estoque.Produto.Nome_Produto;
                labelDataEntrada.Text = estoque.Data_Entrada.ToString();
                labelQuantidade.Text = estoque.Quantidade.ToString();

                labelUnidadeDeMedida.Text = estoque.Produto.Unidade_De_Medida.Sigla_Unidade_De_Medida;

                List<Funcionario> listaFuncionarios = new List<Funcionario>();
                listaFuncionarios.Add(estoque.FuncionarioEntradaProduto);
                gridViewFuncionario.DataSource = listaFuncionarios;
                gridViewFuncionario.DataBind();

                List<Parceiro> listaParceiros = new List<Parceiro>();
                if (estoque.Parceiro != null)
                {
                    listaParceiros.Add(estoque.Parceiro);
                }
                gridViewParceiro.DataSource = listaParceiros;
                gridViewParceiro.DataBind();

                List<Idoso> listaIdosos = new List<Idoso>();
                if (estoque.Idoso != null)
                {
                    listaIdosos.Add(estoque.Idoso);
                }
                gridViewIdoso.DataSource = listaIdosos;
                gridViewIdoso.DataBind();
            }
            catch (Exception ex)
            {
                throw new Exception("Erro na visualização da doação.", ex);
            }
        }

        //protected void buttonAdicionarParceiro_OnClick(object sender, EventArgs e)
        //{
        //    if(!string.IsNullOrEmpty(textBoxCPFDoParceiro.Text))
        //    {
        //        DataSourceParceiros dataSourceParceiros = new DataSourceParceiros();
        //        Parceiro parceiro = dataSourceParceiros.BuscaParceiroPeloCPF(textBoxCPFDoParceiro.Text);
        //        List<Parceiro> list = new List<Parceiro>();
        //        list.Add(parceiro);
        //        gridViewParceiro.DataSource = list;
        //        gridViewParceiro.DataBind();
        //    }
        //}

        //protected void dropDownListTipoDeDoacao_OnSelectedIndexChanged(object sender, EventArgs e)
        //{
        //    DropDownList dropDownList = (DropDownList) sender;
        //    string codigo = dropDownList.SelectedValue;
        //    CarregaDropDownProdutos(codigo);
        //}

        //protected void dropDownListProdutos_OnSelectedIndexChanged(object sender, EventArgs e)
        //{
        //    DropDownList dropDownList = (DropDownList)sender;
        //    string codigo = dropDownList.SelectedValue;
        //    labelUnidadeDeMedida.Text = ObtemUnidadeDeMedida(codigo);
        //}

        //private string ObtemUnidadeDeMedida(string codigo)
        //{
        //    DataSourceUnidadeDeMedida dataSourceUnidadeDeMedida = new DataSourceUnidadeDeMedida();
        //    UnidadeDeMedida unidadeDeMedida = (from u in dataSourceUnidadeDeMedida.BuscaTodasUnidadesDeMedida() where u.Codigo_Unidade_De_Medida.ToString() == codigo select u).First();
        //    return unidadeDeMedida.Sigla_Unidade_De_Medida;

        //}

        //protected void buttonAdicionarIdoso_OnClick(object sender, EventArgs e)
        //{
        //    if (!string.IsNullOrEmpty(textBoxCPFIdoso.Text))
        //    {
        //        DataSourceIdoso dataSourceIdoso = new DataSourceIdoso();
        //        Idoso idoso = dataSourceIdoso.BuscaIdosoPeloCPF(textBoxCPFIdoso.Text);
        //        List<Idoso> list = new List<Idoso>();
        //        list.Add(idoso);
        //        gridViewIdoso.DataSource = list;
        //        gridViewIdoso.DataBind();
        //    }
        //}
    }
}